<?php


namespace app\models;


use yii\elasticsearch\ActiveRecord;


/**
 * Notes: elasticsearch 产品
 * User: aniu
 * DateTime: 2021/4/3 14:51
 * Class EsProduct
 * @package app\models
 * @property int $id
 * @property string $name 产品名称
 * @property string $spu SPU
 * @property int|null $template_id 产品模板ID
 * @property string|null $template_no 产品版号
 * @property string|null $product_type 产品详细分类
 * @property int $is_customize 是否定制产品：1是,0否
 * @property string $magento_template_id 模板ID(网站的模板)
 * @property string $brand 品牌
 * @property string|null $osku 旧版sku
 * @property string|null $main_sku 主SKU
 * @property int|null $oid 旧版产品ID
 * @property string $gender 款式（男、女、通用）
 * @property int $is_clearance 是否清仓
 * @property int $support_stock 是否支持库存
 * @property string|null $short_description 产品默认英文短小简介
 * @property string|null $description 产品默认英文简介
 * @property string|null $copyright 版权
 * @property int $uid 创建人
 * @property int $created_at 创建时间
 * @property int $updated_at 修改时间
 * @property string|null $fids 附件/图片
 * @property string|null $plating_color 电镀颜色-网站筛选项
 * @property string|null $style 对应product tag 表 id
 * @property string|null $occasion 对应product_tag 表 id
 * @property string|null $recipient 对应product_tag 表 id
 * @property string|null $gtin 谷歌跟踪标记，全网唯一
 * @property int|null $img_change 标记图片是否改变，只有当图片修改后才同步图片给magento
 * @property string|null $fids_pic 实拍图
 * @property string|null $fids_zip SSY压缩包
 * @property int|null $status 主站上架状态
 * @property int|null $review_num 评论数
 * @property string|null $product_set_number 套装编码
 * @property int|null $qty_ordered 发货数量
 */
class EsProduct extends ActiveRecord
{
    public static function index()
    {
        return 'e_product'; // TODO: Change the autogenerated stub
    }


    public function attributes()
    {
        // TODO: Change the autogenerated stub
        return [
            'id',
            'name',
            'spu',
            'template_id',
            'template_no',
            'product_type',
            'is_customize',
            'magento_template_id',
            'brand',
            'osku',
            'main_sku',
            'oid',
            'gender',
            'is_clearance',
            'support_stock',
            'short_description',
            'description',
            'copyright',
            'uid',
            'created_at',
            'updated_at',
            'fids',
            'plating_color',
            'style',
            'occasion',
            'recipient',
            'gtin',
            'img_change',
            'fids_pic',
            'fids_zip',
            'status',
            'review_num',
            'product_set_number',
            'qty_ordered',
        ];
    }

    public static function mapping()
    {
        return [
            'properties' => [
                'name'    => ['type' => 'text'],
                'spu'    => ['type' => 'text'],
                // text类型在存储数据的时候会默认进行分词，并生成索引。而keyword存储数据的时候，不会分词建立索引，显然，这样划分数据更加节省内存。
                'main_sku'  => ['type' => 'text'],
                'created_at' => ['type' => 'integer']
            ]
        ];
    }


    /**
     * Set (update) mappings for this model
     */
    public static function updateMapping()
    {
        $db = static::getDb();
        $command = $db->createCommand();
        $command->setMapping(static::index(), static::type(), static::mapping());
    }


    /**
     * Create this model's index
     */
    public static function createIndex()
    {
        $db = static::getDb();
        $command = $db->createCommand();
        $command->createIndex(static::index(), [
           'mappings' => static::mapping()
        ]);
    }


    /**
     * Delete this model's index
     */
    public static function deleteIndex()
    {
        $db = static::getDb();
        $command = $db->createCommand();
        $command->deleteIndex(static::index(), static::type());
    }
}